package org.boot.ssm.wxshop.web.controller;

import com.github.pagehelper.PageInfo;
import org.boot.ssm.wxshop.domain.GoodsTypeBig;
import org.boot.ssm.wxshop.domain.GoodsTypeSmall;
import org.boot.ssm.wxshop.service.GoodsTypeBigService;
import org.boot.ssm.wxshop.service.GoodsTypeSmallService;
import org.boot.ssm.wxshop.web.common.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * @program: wxshop
 * @description: 商品类别控制器
 * @author: Parasomnia
 * @create: 2018-03-12 14:41
 **/
@Controller
@RequestMapping("/type")
public class GoodsTypeController {

    @Autowired
    private GoodsTypeSmallService gs;
    @Autowired
    private GoodsTypeBigService gb;

    /**
     * 去类别选择页面
     * @return
     */
    @RequestMapping("/front/types")
    public String types(Model model){
        GoodsTypeBig g = new GoodsTypeBig();
        g.setIsDelete(1);
        model.addAttribute("bigList",gb.queryParamList(g));
        return "frontstage/goodstype/classify";
    }

    /**
     * 根据大类别id获取小类别加载在页面上
     * @param goodsTypeSmall
     * @return
     */
    @RequestMapping("/front/smallTypes")
    @ResponseBody
    public JsonResult smallTypes(GoodsTypeSmall goodsTypeSmall){
        return new JsonResult(0,"获取成功", gs.queryParamList(goodsTypeSmall));
    }

    //========================================后台==========================================================================
    /**
     * 去类型管理页面
     * @return
     */
    @RequestMapping("/goTypemgr")
    public String goodsType(){
        return "backstage/goodstype/mgr";
    }

    /**
     * 去大类的添加/修改页面
     * @return
     */
    @RequestMapping("/goTypeBigAddOrEdit")
    public String goodsTypeBigAddOrEdit(Integer id,Model model){
        if(id!=null){//去修改
            GoodsTypeBig goodsTypeBig = gb.queryById(id);
            model.addAttribute("goodsTypeBig",goodsTypeBig);
        }
        return "backstage/goodstype/typebig";
    }

    /**
     * 去小类修改或添加页面
     * @param id 商品小类别id
     * @param model 商品数据
     * @return
     */
    @RequestMapping("/goTypeSmallAddOrEdit")
    public String goodsTypeSmallAddOrEdit(Integer id,Model model){
        if(id!=null){//去修改
            GoodsTypeSmall goodsTypeSmall = gs.queryById(id);
            model.addAttribute("goodsTypeSmall",goodsTypeSmall);
        }
        GoodsTypeBig goodsTypeBig = new GoodsTypeBig();
        goodsTypeBig.setIsDelete(1);
        //获取所有大类别放入request
        model.addAttribute("goodsTypeBigList",gb.queryParamList(goodsTypeBig));
        return "backstage/goodstype/typesmall";
    }



    /**
     * ajax获取大类列表
     * @param page 当前分页
     * @param limit 每页大小
     * @param g 商品类别搜索
     * @return
     */
    @RequestMapping("/typeBigList")
    @ResponseBody
    public JsonResult listTypeBig(Integer page,Integer limit,GoodsTypeBig g){
        PageInfo<GoodsTypeBig> pageInfo = gb.queryPageListByName(page,limit,g);
        return new JsonResult(0,"加载成功",pageInfo.getList(),pageInfo.getTotal());
    }

    /**
     * ajax获取小类列表
     * @param page 当前分页
     * @param limit 每页大小
     * @param g 商品类别搜索
     * @return
     */
    @RequestMapping("/typeSmallList")
    @ResponseBody
    public JsonResult listTypeBig(Integer page,Integer limit,GoodsTypeSmall g){
        PageInfo<GoodsTypeSmall> pageInfo = gs.queryPageListByName(page,limit,g);
        return new JsonResult(0,"加载成功",pageInfo.getList(),pageInfo.getTotal());
    }

    /**
     * 添加或修改大类
     * @param g 需要添加或修改的对象
     * @return
     */
    @RequestMapping("/bigAddOrEdit")
    @ResponseBody
    public JsonResult bigAddOrEdit(GoodsTypeBig g){
        //添加或修改
        gb.addOrEditType(g);
        return new JsonResult(200,"操作成功");
    }

    /**
     * 大类删除
     * @param goodsTypeBig 需要删除的对象
     * @return
     */
    @RequestMapping("/bigDelete")
    @ResponseBody
    public JsonResult bigDelete(GoodsTypeBig goodsTypeBig){
        gb.deleteWithCheck(goodsTypeBig);
        return new JsonResult(200,"删除成功");
    }

    /**
     * 添加或修改小类
     * @param g 需要添加或修改的对象
     * @return
     */
    @RequestMapping("/smallAddOrEdit")
    @ResponseBody
    public JsonResult smallAddOrEdit(GoodsTypeSmall g){
        //添加或修改
        gs.addOrEditType(g);
        return new JsonResult(200,"操作成功");
    }

    /**
     * 小类删除
     * @param goodsTypeSmall 需要删除的对象
     * @return
     */
    @RequestMapping("/smallDelete")
    @ResponseBody
    public JsonResult bigDelete(GoodsTypeSmall goodsTypeSmall){
        gs.updateDelete(goodsTypeSmall);
        return new JsonResult(200,"删除成功");
    }

}
